package com.demo.service;

import com.basic.domain.PageResult;
import com.demo.pojo.Order;
import com.baomidou.mybatisplus.extension.service.IService;
import com.demo.pojo.Order;
import com.demo.service.criteria.OrderLinkProductQueryCriteria;
import com.demo.service.criteria.OrderQueryCriteria;
import com.demo.service.dto.OrderDto;
import com.demo.service.dto.OrderDto;
import com.demo.service.dto.OrderDto;
import com.demo.service.dto.OrderLinkProductDto;
import org.springframework.data.domain.Pageable;

import java.util.List;

/**
 * <p>
 *  订单
 * </p>
 *
 * @author author
 * @since 2024-10-12
 */
public interface IOrderService extends IService<Order> {

    // 更新或者添加数据
    OrderDto saveOrUpdate(OrderDto orderDto);

    // 查询所有符合criteria条件的数据
    List<OrderDto> queryAll(OrderQueryCriteria criteria);

    // 分页查询所有符合criteria条件的数据
    PageResult<OrderDto> queryAll(OrderQueryCriteria criteria, Pageable pageable);

    // 根据id获取数据
    OrderDto queryById(Long id);

    // 根据用户条件获取一个用户信息，如果条件符合多个数据则取第一条
    OrderDto queryOne(OrderQueryCriteria criteria);

    // 统计数量
    Long count(OrderQueryCriteria criteria);

    // 获取一条对应条件的用户实体数据
    Order getOne(OrderQueryCriteria criteria);

    // 获取所有对应条件的用户实体数据
    List<Order> getAll(OrderQueryCriteria criteria);

    // 根据id逻辑删除
    int deleteId(Long id);

    // 根据条件逻辑删除
    int deleteByMore(OrderQueryCriteria criteria);

    List<Order> testXml();

    List<OrderLinkProductDto> queryAllLinkProduct(OrderLinkProductQueryCriteria criteria);
}
